package io;

import java.io.File;
import java.io.IOException;
import java.util.Scanner;

/**
 * @version 1.8
 * @Author Djx_hmbb
 * @Date 2023/8/31 16:28
 * @注释:做一个小程序,可以查找当前目录下的文件是否存在
 */
public class IODemo11 {
    private static Scanner s = new Scanner(System.in);

    public static void main(String[] args) throws IOException {
/*        try(InputStream inputStream = new FileInputStream("./ddd.txt")){
            Scanner s = new Scanner(inputStream);
            //此时读取的内容就是从文件读取 了
            s.next();
        }*/

//        1. 输入目录路径
        System.out.println("请输入查找的文件所在目录路径");
        //这里要用next(),不可以用nextLine()
        String road = s.next();
        File root = new File(road);
        if(!root.isDirectory()){
            //如果不是一个目录,或只是一个文件,或目录不存在,则无法搜索
            System.out.println("输入的路径有误!");
        }
//        2. 查找文件
//           如果是目录,则继续查找子目录
//           如果是文件,则比较是否为要查找的文件
        //输入文件名
        System.out.println("请输入文件名称:");
        String myName = s.next();
        scanDir(root,myName);
        System.out.println("文件已查找完毕!");
    }

    private static void scanDir(File root, String myName) {
//        System.out.println("[scanDir]:"+root.getAbsolutePath());
//        将root下的所有文件/目录存到File[]数组中,相当于双击打开root目录
        File[] filelist = root.listFiles();
//        开始注意查找文件/目录
//        如果为空,则返回
        if(filelist == null){
            return;
        }
//        遍历File[]数组
        for (File f : filelist) {
            //如果f是目录,则判断是否为空
            if(f.isDirectory()){
                //如果是目录,则进一步开始递归
                scanDir(f,myName);
            }else {
             //不是目录的话,则判断文件名是否包含关键字
                if(f.getName().contains(myName)){
                    //包含关键字,则判定是否要删除
                    System.out.println("请确认是否删除"+f.getPath()+"文件?");
                    String i = s.next();
                    if(i.equals("y") || i.equals("Y")){
                        //确定删除
                        f.delete();
                        System.out.println("删除成功!继续寻找下一个文件");
                    }else {
                        System.out.println("删除取消!继续寻找下一个文件");
                    }
                }
            }
        }
    }

}

